package ar.com.tallerdos.smartdinner.model;

import java.io.Serializable;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Date;

import com.google.gson.annotations.Expose;

@SuppressWarnings("serial")
public class Producto implements Serializable, Identity {
    @Expose
    private Integer id;

    @Expose
    private String codigo;

    @Expose
    private String descripcion;

    @Expose
    private Integer categoria;

    @Expose
    private Boolean activo;

    @Expose
    private Double precio;

    @Expose
    private Date fechaMod;

    private Subrubro subrubro;

    @Expose
    private int subrubro_id;
    
    @Expose
    private int admite_guarniciones;
    
    @Expose
    private int admite_salsas;

    public Producto() {
    }

    public Producto(Integer id, String codigo, String descripcion, Double precio) {
	this.id = id;
	this.codigo = codigo;
	this.descripcion = descripcion;
	this.precio = precio;
	this.fechaMod = new Date();
    }

    public Integer getId() {
	return id;
    }

    public void setId(Integer id) {
	this.id = id;
    }

    public String getCodigo() {
	return codigo;
    }

    public void setCodigo(String codigo) {
	this.codigo = codigo;
    }

    public String getDescripcion() {
	return descripcion;
    }

    public void setDescripcion(String descripcion) {
	this.descripcion = descripcion;
    }

    public Integer getCategoria() {
	return categoria;
    }

    public void setCategoria(Integer categoria) {
	this.categoria = categoria;
    }

    public Boolean getActivo() {
	return activo;
    }

    public void setActivo(Boolean activo) {
	this.activo = activo;
    }

    public Double getPrecio() {
	return precio;
    }    
    
    public String getPrecioDosDecimales() {
	if (precio == null) {
	    return "N/A";
	} else {
	    NumberFormat formatter = new DecimalFormat("#0.00");
	    return formatter.format(precio);
	}
    }

    public void setPrecio(Double precio) {
	this.precio = precio;
    }

    public Date getFechaMod() {
	return fechaMod;
    }

    public void setFechaMod(Date fechaMod) {
	this.fechaMod = fechaMod;
    }

    public Subrubro getSubrubro() {
	return subrubro;
    }

    public void setSubrubro(Subrubro subrubro) {
	this.subrubro = subrubro;
    }

    public int getSubrubro_id() {
	return subrubro_id;
    }

    public void setSubrubro_id(int subrubro_id) {
	this.subrubro_id = subrubro_id;
    }
    
    public int getAdmiteGuarniciones(){
    	return this.admite_guarniciones;
    }
    
    public int getAdmiteSalsas(){
    	return this.admite_salsas;
    }

    @Override
    public String toString() {
	return (descripcion != null ? descripcion : "");
    }
}
